Casey Bralla The NerdWorld Report

J. R. Casey Bralla
41 Mystery Rose Lane
West Grove, PA 19390
610-810-7716

Casey's eMail Address
Technology, Religion, Politics
and
The Mind-Body Dualism Problem

JRC-65 Computer

  1. Introduction and Design Objectives
  2. Clock Circuit

Tech Info


Essays




Site Hosted by
Vorlon Information Technologies


NerdWorld Logo

Entire site Copyright © 2024 by J. R. Casey Bralla
(except for obvious external works).
All rights reserved.

NOTE: If you link to this site, or otherwise find it useful, please send a brief note to the author.

Casey's eMail Address

Thank you!

JRC-65

A Homebrew 6502 Blinkin' Lights Computer

April 4, 2024


Part 0 - Introduction, Overview, and Design Objectives

Back in ancient times (1979), I used a SYM-1 single board computer as the heart of my senior mechanical engineering project. It formed the control system for a model solar heating system. (My project was to demonstrate how these newfangled microprocessors could control a physical device.)

The SYM was a great little system. It fit on a single PC board, about the size of single sheet of paper. It had a 6502 CPU running at 1 MHz, 1 Kilobyte of RAM, and a very nice built-in monitor with a hexadecimal keyboard that allowed one to enter hand-assembled programs byte-by-byte. It also included a special chip, called a VIA 6522, that had 16 individually addressed I/O lines that I used to control a pump and valves for my model solar heating system.

After I graduated, I continued to use and build the system, adding a video card, extra RAM, an assembler in ROM, and eventually two single-sided/single-density floppy disks so I could finally ditch the cassette deck for program storage. (BTW, this meant I had a whopping 76 Kilobytes of on-line storage! I was so cool, even my poops didn't stink. 😁) I even built a wooden case to hold the thing, which had grown to became a 25-pound behemoth.
JRC-1000 Computer JRC-1000 Computer

Since those days long ago, I've always had a desire to build a 6502 system of my own from scratch. Amazingly, most of the component parts popular in 1979 are still available. The venerable 6502 is not only still available, it has been improved with a 14-fold increase in speed, the addition of several more instructions, and the ability to slow down to a dead stop, without losing any data.

Ben Eater posted a text and video series on the Internet of how to build a 6502 system. Ben's videos are a great introduction to the 6502 since he shows how the CPU fetches data from specific addresses and executes those instructions. Ben put LEDs on the address and data busses so you can see exactly what the CPU is doing. My SYM-1 ran at a (then) blistering speed of 1 MHz. Unfortunately, even at this relatively slow speed, the signals on the address and data busses change so rapidly, the human eye can't see anything. Ben's system includes a analog variable speed clock for the computer (based on a 555 timer), where you can simply adjust a potentiometer to slow the CPU clock down to a crawl. At slow speeds, the LEDs can be read and interpreted.

I bought a copy of Ben's kit, and it inspired me to design and build my system. But I had a few extra objectives for the system. These are:

Design Objectives:

  1. Make the internal operations as visible as possible by putting LEDs on each of the main address, data, and control lines. (I LOVE blinking lights). Also, decode the address and data lines to display the hex address and data on an LCD.
  2. A precise and programmable clock that allows the system to slow to a dead crawl so that the signals on the control lines are actually visible and not simply a blur.
  3. Use Arduinos and Raspberry Pi's to simplify the system and allow for interface to file storage and networked resources
The overall block diagram of the system is shown here.

The system would consist of the following items:

  1. A 6502 CPU (the newest CMOS version from the Western Design Center)
  2. Two 32K static RAM chips (Since the 6502 can only address 64K, I will steal some address space from the RAM and assign it to the ROM & I/O)
  3. A 2K ROM for basic BIOS functions. (The BIOS will be small because I plan to put most software into RAM; I expect heavy development work on the Operating System.)
  4. Two 6522 VIAs (Versatile Interface Adapter) for I/O. One of these will drive a 20 character x 4 line LCD screen. The other will interface to a Raspberry Pi, which will connect to a keyboard, monitor, network, and file storage.
  5. A 20 character x 4 line LCD screen, which will be the main display (except for the dumb terminal on the Raspberry Pi).
  6. A Raspberry Pi which will communicate to the computer via an 8-bit parallel interface through one of the 6522 VIAs. The Pi will act as a terminal, file server, and network connection for the computer.
  7. An Arduino for generating the main clock signal. This will allow for setting a specific frequency, including dead slow rates such as 0.1 Hz so it will be possible to see all the detailed activities of the computer. The Arduino will also have an LCD display to show the exact frequency of the clock.
  8. An Arduino and LCD to decode and display the Address and Data lines in hexadecimal format.
  9. LEDs: 16 Address Lines
  10. LEDs: 8 Data Lines
  11. LEDs: IRQ, NMI, Read/Write Control Lines, & individual Chip Select Lines for each I/O mapped chip.
  12. LEDs: Heartbeat signals for the computer, plus the Arduino & the Pi
  13. LEDS: Status of Terminal Character Input and Terminal Character Output
  14. LEDS: Larson scanner (just to look cool)



Read Part 1 of this series, where I breadboard a variable clock generator using an Arduino Nano.